Providing a program listing

ABSTRACT

Systems and methods for providing a program listing include storing user profile data and a user identifier for a user; storing an association of the user identifier with user identifiers for each of the plurality of social contacts of the user; receiving program identifier data representing programs currently being viewed by the social contacts; ranking the program identifier data for each of the plurality of social contacts based at least in part on the user profile data; and sending display data representing the program identifier data for display in an order based on the ranking.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.13/342,893, filed Jan. 3, 2012, which is hereby incorporated byreference herein in its entirety.

BACKGROUND

The present disclosure relates generally to systems and methods forproviding program content and more particularly, to ranking programmingcontent according to programs being viewed by a plurality of socialcontacts.

SUMMARY

Implementations of the systems and methods of providing program contentare described herein. One implementation is a method for providing aprogram listing of programs being viewed by a plurality of socialcontacts. The method may include storing user profile data and a useridentifier for a user. The method may also include storing anassociation of the user identifier with user identifiers for each of theplurality of social contacts of the user. The method may further includereceiving, from the plurality of social contacts of the user, programidentifier data representing programs currently being viewed by thesocial contacts. The method may yet further include ranking the programidentifier data for each of the plurality of social contacts based atleast in part on the user profile data. The method may also includesending display data representing the program identifier data fordisplay in an order based on the ranking. The method may includereceiving a user selection of one of the program identifiers from theuser. The method may also include determining whether the user hasaccess to a program source providing the program identified by theprogram identifier. The method may include, based on the determination,sending display data representing the selected program to the user.

Another implementation is a method for providing a program listing ofprograms being viewed by a plurality of social contacts. The method mayinclude storing user profile data and a user identifier for a user. Themethod may also include storing an association of the user identifierwith user identifiers for each of the plurality of social contacts ofthe user. The method may yet further include receiving programidentifier data representing programs currently being viewed by thesocial contacts. The method may include ranking the program identifierdata for each of the plurality of social contacts based at least in parton the user profile data. The method may also include sending displaydata representing the program identifier data for display in an orderbased on the ranking.

Another implementation is a system for providing a program listing ofprograms being viewed by a plurality of social contacts. The system mayinclude a tangible computer-readable storage device comprisinginstructions; and one or more processors coupled to the tangiblecomputer-readable storage device and configured to execute theinstructions to perform operations including storing user profile dataand a user identifier for a user; storing an association of the useridentifier with user identifiers for each of the plurality of socialcontacts of the user; receiving program identifier data representingprograms currently being viewed by the social contacts; ranking theprogram identifier data for each of the plurality of social contactsbased at least in part on the user profile data; and sending displaydata representing the program identifier data for display in an orderbased on the ranking.

These implementations are mentioned not to limit or define the scope ofthe disclosure, but to provide an example of an implementation of thedisclosure to aid in understanding thereof. Particular implementationscan be developed to realize one or more advantages.

The details of one or more implementations of the disclosure are setforth in the accompanying drawings and the description below. Otherfeatures, aspects, and advantages of the disclosure will become apparentfrom the description, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A illustrates a user interface in accordance with a describedimplementation;

FIG. 1B illustrates a user interface in accordance with a describedimplementation;

FIG. 1C illustrates a user interface in accordance with a describedimplementation;

FIG. 1D illustrates a user interface in accordance with a describedimplementation;

FIG. 2 is a flow diagram of a method in accordance with a describedimplementation;

FIG. 3 is a flow diagram of a method in accordance with a describedimplementation;

FIG. 4 is a flow diagram of a method in accordance with a describedimplementation;

FIG. 5 is a flow diagram of a method in accordance with a describedimplementation;

FIG. 6 is a block diagram of devices that may be used to implement thesystems and methods in accordance with the described implementations.

DETAILED DESCRIPTION

The implementations of the present disclosure may enhance a viewingexperience of a user by (1) showing what the user's social contacts areviewing, (2) ranking the programs according to social contacts, and (3)allowing the user to select one of the programs for viewing. Otherimplementations of the present disclosure enable the user to share theprograms that they are currently viewing, the programs that theyrecommend, etc. The multi-pane display provides multiple shared channelssimultaneously to the user to allow the user to easily locate and selecta program for viewing.

The features disclosed herein may be implemented on a legacy televisionmodule (e.g., internet connectivity is not available.) The featuresdisclosed herein may be implemented on a smart television module (orconnected television module, hybrid television module, etc.), which mayinclude a processing circuit configured to integrate internetconnectivity with more traditional television programming sources (e.g.,received via cable, terrestrial, satellite, over-the-air, or othersignals). The smart television module may be physically incorporatedinto a television set or may include a separate device such as a set-topbox, Blu-ray or other digital media player, game console, hoteltelevision system, and other companion device. A smart television modulemay be configured to allow viewers to search and find videos, movies,images and other content on the web, on a local cable TV channel, on asatellite TV channel, or stored on a local hard drive.

A set-top box (STB) or set-top unit (STU) may include an informationappliance device that may contain a tuner and connect to a televisionset and an external source of signal, turning the signal into contentwhich is then displayed on the television screen or other displaydevice. A smart television module may be configured to provide a homescreen or top level screen including icons for a plurality of differentapplications, such as a web browser and a plurality of streaming mediaservices (e.g., Netflix, Vudu, Hulu, etc.), a connected cable orsatellite media source, other web “channels”, etc.

The smart television module may further be configured to provide anelectronic programming guide to a user. Companion applications to thesmart television module may be operable on a mobile computing device toprovide additional information about available programs to a user, toallow the user to control the smart television module, etc. In alternateimplementations, the companion applications and features describedherein may be implemented on a laptop computer or other personalcomputer, a smart phone, other mobile phone, handheld computer, a tabletPC, or other computing device.

FIG. 1A illustrates an example user interface in accordance with adescribed implementation. In FIG. 1A, program content is received from amedia source and displayed on a display device. The program content mayinclude streaming content, webpage/website content, image content, etc.The display device may include, but is not limited to, aninternet-enabled television, a legacy television (not internet enabled),a tablet, notepad, or any other appropriate device that may displayprogram content.

In some implementations, the program content may be provided by anapplication operating on a computing device. In some implementations,the computing device may include, but is not limited to, a DVR, a DVDplayer, a set-top box, an integrated internet television device, asmartphone, a tablet personal computer, a laptop, a projector screen,etc.

The computing device may be configured to receive an electronicprogramming guide and/or provide an electronic programming guide fromthe provider of the program content. The computing device may also beconfigured to receive, from the user, a user input to select a program,share a program, recommend a program, etc. In some implementations, theuser input may be a request to arrange, organize, or rank a programlisting. In some implementations, the user input may be a request toshare, recommend, or take another action with respect to the program.The user input may be stored by the computing device for retrieval bythe application, the program content provider, etc. The user input mayalso be used to update or modify the user's preferences.

The computing device may also be configured to display a user inputdevice, for example, a “program listing selection” input device. Theuser input device may appear within the display of the computing device,e.g., as an overlay. In some implementations, the overlay is a touchscreen. The user input device may also be an external mechanism to thecomputing device, e.g., a remote control, a d-pad or directional pad,etc.

User interface 100 may display a number of applications, e.g., games,web-browsing applications, etc. User interface 100 may include a screenat start-up, i.e., a welcome or home screen. The welcome screen may beset as a default by the system or set by the user. In someimplementations, the welcome screen displays a number of applications,e.g., most popular, most-viewed, and an icon or link to any applicationthat may be launched by a user.

User interface 100 may include a sharing application. For example, theuser may share a current television program with a circle(s) of friends,e.g., using a sharing application. The sharing application may implementsocial networking. For example, the user may provide program and/orchannel information to a social networking website. The sharingapplication may also be included on or provided by the social networkingwebsite.

The user may also share program content using any device that acts as aremote control, e.g., mobile computing device, d-pad, projection device,etc. In some implementations, the mobile computing device may also beused to recognize a program that is being currently viewed, e.g., usingsound pattern recognition. For example, for a legacy television, themobile computing device may recognize the program using auditorysignals. The mobile computing device may receive the auditory signalsand provide the auditory signals to a server. The server may apply soundpattern recognition processing using a comparison engine. The comparisonengine may compare segments of audio or other characteristics of thesegment of audio to other audio segments in a database to determine amatch. Once a match is determined, the engine provides the match, whichmay then be received by the mobile computing device as programidentifier data.

The user may share program content (e.g., program identifier data orother metadata) from the mobile computing device directly to the socialnetworking website. The user may also select a user profile or accounton the mobile computing device, television, etc. to share from. Forexample, households may have multiple accounts configured on one deviceand the sharing application includes a confirmation screen with log-inidentifier, etc. to make sure the user that is sharing the programcontent matches the correct account.

User interface 100 may include a program listing application display 101as shown in FIG. 1A. The program listing display 101 may be the initialscreen for a user, i.e., the welcome screen, which is displayed upon theuser launching the application. The program listing display 101 may beincluded in user favorites, as part of another application, or includedin another similar easy-to-locate section of the display of the userinterface 100.

The program listing display 101 may include a listing of all programsthat are currently available according to the electronic programmingguide. The program listing display 101 may include a listing of programsthat may be available at a later date/time. In some implementations, theprogram listing display 101 may include currently viewed episodes,previously-viewed episodes, upcoming episodes, episodes viewed byfriends, etc.

The program listing display 101 may include a listing of programsselected, sorted or organized based on the user's past viewing habits,the user's location, the user's device, the user's profile, the user'spreferences, etc. For example, the program listing display 101 mayinclude a listing of programs on the user's television that varies fromthe listing of programs that are included on the user's mobile device.In some implementations, the user's mobile device may be used to providethe program listing display 101 on another user's device, such as theother user's television.

In some implementations, the program listing display 101 may include agenre that has been selected by the user. For example, the user may onlywant sports-related program content to be included within the programlisting display 101. The program listing display 101 will then includeonly sports-related program content. The user may select sublevelswithin the genre. For example, sports-related program content may befurther defined as only baseball-related programs. Baseball-relatedprograms may be further defined as only baseball games, baseball movies,etc.

The program listing may be displayed in a number of formats. The programlisting format may be selected by the system and/or selected by theuser. For example, FIG. 1A provides boxes horizontally aligned on thescreen. In some implementations, the program listing display 101provides a text-based program listing, e.g., a list without images. Thetext may comprise a program identifier data, a program channel, anidentifier of the social contact viewing the program (e.g., name,thumbnail image, nickname, email address, etc.).

In other implementations, the program listing display 101 provides aprogram listing using audio as a guide for the user, e.g., the programlisting display 101 is verbally communicated to the user using onlysounds (e.g., a screen reader). In some implementations, the programlisting display 101 includes more or fewer boxes than shown in FIG. 1A.In some implementations, the program listing display 101 includesgraphical representations other than boxes. In some implementations, theprogram listing display 101 includes more or less information than shownin FIG. 1A. The program listing display 101 may include a scrollbar tosearch through the program listing, as shown in FIG. 1A as verticallypositioned. In other implementations, the scrollbar may be horizontallypositioned. The scrollbar may be interchangeable with buttons, icons, orother representations that allow the user to search through the programlisting. The program listing display 101 may also provide a socialsurfing mode.

In FIG. 1B, user interface 100 displays an example of the social surfingmode. For a smart television module (e.g., having internetconnectivity), the user may “social surf” on the television itself. Fora legacy television, the user may “social surf” on the mobile computingdevice. In some implementations, the social surfing mode may be its ownstandalone application. The social surfing mode is a live mode, i.e.,the display of the user interface 100 may update as the programs thatthe social contacts are viewing change. The user interface 100 mayupdate in real time to display the latest programs that the socialcontacts are viewing, are recommending, etc.

In the social surfing mode, the user may select programs based on anumber of factors including, but not limited to, what the user's socialcontacts are viewing, what the user's social contacts have shared withthe user, what the user's social contacts have previously viewed, whatthe user's social contacts have recommended, etc. The user may browsethrough programs that other social contacts are currently viewing, havepreviously viewed, have tagged for future viewing, have recommended,have provided an input rating (e.g., “+1”, “like”, etc.), etc.

The social surfing mode may provide an organization, order orarrangement of programs. In some implementations, the social surfingmode may organize the programs in an order based on a ranking. In FIG.1B, the ranking is based on the number of social contacts that arecurrently viewing each program, with football game being the mostpopular currently viewed program among the social contacts. The programsmay be organized in a ranking according to many different factorsincluding, but not limited to, what the user is most likely to viewbased on user profile data such as interests, viewing history, etc., howmany social contacts are currently viewing a program (such as in FIG.1B), how many social contacts previously viewed the program, how manysocial contacts recommended the program, etc. The program identifiers orfields may include an image of the program, streaming media of theprogram, audio of the program, text of the program, etc. In someimplementations, the ranking may be provided to the user in real time.For example, as the social contacts view the programs, recommendprograms, etc.

In FIG. 1B, the organization is shown in a vertical listing, orderedfrom top to bottom. For example, football game is ranked in the topposition, because two close friends (Emily and Connie), and 18 morefriends are currently viewing the program (as shown in FIG. 1C). Inother implementations, the organization can be horizontal. The rankingmay be provided in any format that denotes a ranking to the user (e.g.,visual, audio (e.g., a screenreader), etc.).

As shown in FIG. 1B, the ranking of the programs includes the programlisting and the program channel or source. In other implementations, thedisplay of programs includes more information than what is shown in FIG.1B. For example, the display of programs may include an indicatorrelated to a social contact. The indicator related to a social contactmay include a statement, action, or direction provided by the socialcontact, e.g., “Gretchen has nudged this television program for you.” Inother implementations, more information regarding each program may beprovided than what is shown in FIG. 1C, such as, additional programsthat the user may like, comments made by the current social contactsthat are viewing the program, etc.

In FIG. 1C, a display of one of the programs from the ranking isprovided in response to user selection of the football game in FIG. 1B.The selection of football game may include providing the user withadditional information, as shown in FIG. 1C, such as additional socialcontact information, comments made regarding the football game,hyperlinks to additional information (e.g., the roster of the footballteam), etc. The selection of program content may also display the socialcontacts currently viewing the program (e.g., Emily, Connie and 18 otherfriends). The names of the social contacts, the images of the socialcontacts, or any other social contact identifier may also be displayed.Messages or other feedback (e.g., Like, DisLike, etc.) may also bedisplayed alongside or near each social contact identifier. In otherimplementations, the program content display includes social contactsthat previously viewed the program. In some implementations, the programcontent display includes recommendations by social contacts. Forexample, a social contact may provide alternative programs that the usermay be interested in viewing. In another example, a social contact maysuggest related content to the currently viewed program (e.g., music,videos, news articles, etc.)

In other implementations, the system may determine the ranking of theprogram listing as shown in FIG. 1B. For example, the user may determinethat program content that Emily is currently viewing should not beconsidered in the ranking and may accordingly remove Emily from theranking, but not from the user's social contacts. In otherimplementations, the user may determine that Emily's recommendationsand/or other actions (currently viewing, previously viewing, etc.)should take priority over other social contacts and accordingly upgradethe social contact for use in ranking the program content.

In some implementations, the system may determine the ranking of theprogram listing by accounting for an affinity (“how close”) the user haswith a social contact. Social networking data may be received to assignweights to the edges in a social graph that connect each user to asocial contact. The “closer” the user is with a social contact, thehigher the weight assigned to the edge. The weight may be used to rankthe program listing.

In another example, the system may be configured to determine that theuser consistently or frequently selects programs that Emily is currentlyviewing, recommends, etc. The ranking of the program listing may beautomatically determined by the system, which may list Emily's programsin the first position on the program listing due to the user's previousselections.

FIG. 1D is an example user interface 130 in accordance with a describedimplementation. User interface 130 may include one channel/program feedat a time, simultaneous multiple channel/program feeds, text feeds, etc.For example, in a single feed user interface, the user may switch thetelevision to the “social surfing” mode. When the user changes thechannel/program up or down, the television flips throughchannels/programs that the user's social contacts are currently watchingand/or have shared with the user. The channel/program may be annotatedwith information 150 about social contacts who are currently viewing theprogram (e.g., “Astrid and George are currently watching this.”) Theuser may step through channels via the television, starting with thechannel/program that the user is most likely to like, e.g., initiallydisplaying channels/programs that the user is most likely to like basedon what social contacts are watching, social contact affinity, pastchannel viewing history, other user profile data, etc.

As shown in FIG. 1D, a multiple channel/program feed user interface 130is illustrated. The user may view video feeds for multiplechannels/programs at once or simultaneously, in which thechannels/programs may be arranged in a grid. The audio may play only forthe feed highlighted 152 by the user, in response to the user selectionof one of the portions of the displayed grid.

The user may move to any displayed channel/program and select thechannel/program to view the channel/program full screen on thetelevision. In one example, a single click of a mouse or touch pad willselect the program, highlight the program (e.g., with a darkened outlineor box), and begin play of the audio from the program. A double click orsecond click on the program will cause the program to be viewed in alarger box or full screen, and/or cause other program boxes to beremoved from the display area. Each box of user interface 130 may show avideo. The highlighted box 152 may show a video feed and audio. Eachchannel/program depicted by each box of user interface 130 may besocially annotated, i.e., information regarding the user's socialcontacts, as shown in social annotation 150. Each of the display areasof interface or screen 130 may represent a single pane of a multi-panedisplay.

FIG. 2 is a flow diagram of a method for providing a program listing ofprograms being viewed by a plurality of social contacts in accordancewith a described implementation. The method 200 is provided by way ofexample, as there are a number of ways to carry out the methodsaccording to the present disclosure. The method 200 shown in FIG. 2 maybe executed or otherwise performed by one of a combination of varioussystems. The method 200 may be implemented by a computer, a computerprogram product, a client, a server, a client-server relationship, etc.The method 200 is described herein as carried out by the system 600 ofFIG. 6, by way of example.

Example method 200 begins at block 202, in which a user profile data anda user identifier for a user is stored. The user profile data and/oruser identifier may be stored in a memory. The user identifier mayinclude, but is not limited to, the name of the user, the socialnetworking identifier, the IP address of the user, the device of theuser, and any other appropriate user identifier.

At block 204, an association of the user identifier with useridentifiers for each of the plurality of social contacts of the user isstored. In some implementations, the association between the useridentifier and the user identifiers for the plurality of social contactsof the user is stored in memory on a mobile computing device (e.g., asmart television), a server device (e.g., a social networking website),or other memory. The user identifiers for the social contacts mayinclude, but is not limited to, the names of the social contacts, thesocial networking identifier, the IP addresses of the social contacts,the device of the social contacts, and any other appropriate useridentifiers.

At block 206, program identifier data representing programs currentlybeing viewed by the social contacts is received from the plurality ofsocial contacts of the user. Program identifier data may include, but isnot limited to, the name of the program, the source of the program,details of the program, etc.

At block 208, program identifier data for each of the plurality ofsocial contacts is ranked based at least in part on the user profiledata. In some implementations, the user profile data may include, but isnot limited to, relationship(s) between the user and the social contact(e.g., association between the user's profile and the social contact'sprofile), relevance associated with the user profile data, etc.

At block 210, display data representing the program identifier data fordisplay in an order based on the ranking is sent. At block 212, a userselection of one of the program identifiers is received from the user.For example, the user determines which program that they would like toview.

At block 214, a determination is made whether the user has access to aprogram source providing the program identified by the programidentifier. For example, the user may not have access to a pay-per-viewprogram that is included within the ranking. In another example, adetermination may be made whether the program content is appropriate tobe provided to the user. For example, the user may have a “safe”setting, parental restrictions, etc. that prevent R-rated content frombeing displayed regardless whether they are shared by a social contact.At block 216, based on the determination, display data representing theselected program is sent to the user.

FIG. 3 is a flow diagram of a method for providing a program listing ofprograms being viewed by a plurality of social contacts in accordancewith a described implementation. The method 300 is provided by way ofexample, as there are a number of ways to carry out the methodsaccording to the present disclosure. The method 300 shown in FIG. 3 maybe executed or otherwise performed by one of a combination of varioussystems. The method 300 may be implemented by a computer, a computerprogram product, a computer program, a client, a server, a client-serverrelationship, etc. The method 300 is described herein as carried out bythe system 600 of FIG. 6, by way of example.

Example method 300 begins at block 302, in which a user profile data anda user identifier for a user is stored. The user profile data and/oruser identifier may be stored in a memory. The user identifier mayinclude, but is not limited to, the name of the user, the socialnetworking identifier, the IP address of the user, and any otherappropriate user identifier.

At block 304, an association of the user identifier with useridentifiers for each of the plurality of social contacts of the user isstored. In some implementations, the association between the useridentifier and the user identifiers for the plurality of social contactsof the user is stored in memory on a mobile computing device (e.g., asmart television), a server device (e.g., a social networking website),or other memory. The user identifiers for the social contacts mayinclude, but is not limited to, the names of the social contacts, thesocial networking identifier, the IP addresses of the social contacts,and any other appropriate user identifiers.

The association may represent a plurality of relationships with theuser. Each relationship may represent a different relationship with theuser. In some implementations, the plurality of relationships include asocial relationship connection within a social network. The socialrelationship connection may include at least one of a level and adegree. A level may include top friend, friend, acquaintance, following,levels defined by the user, etc. A degree may include how many sharedcontacts between the user and the social contact, how many sharedinterests between the user and the social contact, degrees defined bythe user, etc.

At block 306, program identifier data representing programs currentlybeing viewed by the social contacts is received. Program identifier datamay include, but is not limited to, name of the program, location of theprogram, details of the program, etc.

At block 308, program identifier data for each of the plurality ofsocial contacts is ranked based on the user profile data. In someimplementations, the user profile data may include, but is not limitedto, relationship(s) between the user and the social contact (e.g.,association between user's profile and social contact's profile),relevance associated with user profile data, etc. The program identifiermay be ranked based on recommendations of the social contacts. Theprogram identifier data may be ranked by specific categories, forexample, genre, actor(s), length, etc.

At block 310, display data representing the program identifier data fordisplay in an order based on the ranking is sent. In someimplementations, the user may select one of the program identifiers. Insome implementations, a determination may be made as to whether the userhas access to a program source providing the program identified by theprogram identifier. In another example, a determination may be madewhether the program content is appropriate to be provided to the user.For example, the user may have a “safe” setting, parental restrictions,etc. that prevent R-rated content from being displayed regardlesswhether they are shared by a social contact. In some implementations,display data representing the selected program to the user may be sentbased on the determination. For example, the user may have access to theprogram, in which case, the display data representing the selectedprogram may be displayed. Alternatively, the user may not have access tothe program, in which case, the program may or may not be displayed.

In some implementations, an update to the association of the user withthe social contacts may be received. The user may remove, add, modifythe level or degree, or take any other action with regard to theplurality of social contacts. For example, the user may delete one ofthe social contacts. In some implementations, an update to the programscurrently being viewed by one of the social contacts may be received.The update may represent a change in the program currently being viewedby the social contact. The update may include a new program identifier.The user may edit programs, delete programs, add programs, or take anyother action with regard to the programs currently being viewed.

In other implementations, a change to the user profile data may bereceived. For example, the user may change their favorites, interest, orany content that is related to the program identifier data. In someimplementations, an indication of a recommendation for a program from asocial contact is received. For example, a social contact may recommenda program for the user. In some implementations, an indication of aninput rating by a social contact (e.g., “+1”, “like”, etc.) may bereceived

The ranking of the program identifier data may be rearranged based onthe changed user profile data, update, recommendation, etc. In someimplementations, an affinity score may be determined between the userand the social contact, which may rearrange the ranking. In someimplementations, the rearrangement of the ranking may occur inreal-time. In some implementations, the rearrangement of the ranking maybe determined by the user (e.g., user preferences). In someimplementations, the rearrangement of the ranking may be determined bythe system. The rearrangement may be automatic, delayed (e.g., pendingconfirmation by the user), etc.

FIG. 4 is a flow diagram of a method for providing a multi-pane displayof programs being viewed by a plurality of social contacts in accordancewith a described implementation. The method 400 is provided by way ofexample, as there are a number of ways to carry out the methodsaccording to the present disclosure. The method 400 shown in FIG. 4 maybe executed or otherwise performed by one of a combination of varioussystems. The method 400 may be implemented by a computer, a computerprogram product, a client, a server, a portion operating on each of aclient and a server, etc. The method 400 is described herein as carriedout by the system 600 of FIG. 6, by way of example.

Example method 400 begins at block 402, in which a user identifier for auser is stored. The user identifier may be stored in a memory on amobile computing device (e.g., a smart television), a server device(e.g., a social networking website), or other memory. The useridentifier may include, but is not limited to, the name of the user, thesocial networking identifier, the IP address of the user, the device ofthe user, or any other appropriate user identifier.

At block 404, an association of the user identifier with useridentifiers for each of the plurality of social contacts of the user isstored. In some implementations, the association between the useridentifier and the user identifiers for the plurality of social contactsof the user is stored in memory on a mobile computing device (e.g., asmart television), a server device (e.g., a social networking website),or other memory. The user identifiers for the social contacts mayinclude, but are not limited to, the names of the social contacts, thesocial networking identifiers, the IP addresses of the social contacts,the devices of the social contacts, and any other appropriate useridentifiers. Social contacts may include other users who may have arelationship with the user, such as friends, co-workers, etc., or mayalso include celebrities or other users who do not necessarily have apersonal relationship with the user. The association may comprise aconnection, friend, acquaintance, circle, or other user-defined orsystem-defined association.

At block 406 program identifier data representing programs currentlybeing viewed by the social contacts is received from the plurality ofsocial contacts of the user. Program identifier data may include, but isnot limited to, name of the program, channel and/or source of theprogram or other data that may help identify the program. Other metadataabout the program may also be provided, such as genre, type, rating,etc.

At block 408 display data representing a plurality of the programidentifier data is provided to the user. In some implementations, thedisplay data is configured to align each of the plurality of programidentifier data with an identifier of the social contact viewing or whopreviously viewed the program associated with the program identifier ina multi-pane display.

At block 410, a user request to select a currently viewed program withinthe multi-pane display is received. At block 412, a determination ismade whether the user has access to a program source providing theprogram identified by the program identifier. In another example, adetermination may be made whether the program content is appropriate tobe provided to the user. For example, the user may have a “safe”setting, parental restrictions, etc. that prevent R-rated content frombeing displayed regardless whether they are shared by a social contact.At block 414, sound data is enabled for the selected program.

FIG. 5 is a flow diagram of a method for providing a multi-pane displayof programs being viewed by a plurality of social contacts in accordancewith a described implementation. The method 500 is provided by way ofexample, as there are a number of ways to carry out the methodsaccording to the present disclosure. The method 500 shown in FIG. 5 maybe executed or otherwise performed by one of a combination of varioussystems. The method 500 may be implemented by a computer, a computerprogram product, a client, a server, a client-server relationship, etc.The method 500 is described herein as carried out by the system 600 ofFIG. 6, by way of example.

Example method 500 begins at block 502, in which a user identifier for auser is stored. The user identifier may be stored in a memory on amobile computing device (e.g., a smart television), a server device(e.g., a social networking website), or other memory. The useridentifier may include, but is not limited to, the name of the user, thesocial networking identifier, the IP address of the user, the device ofthe user, and any other appropriate user identifier.

At block 504, an association of the user identifier with useridentifiers for each of the plurality of social contacts of the user isstored. In some implementations, the association between the useridentifier and the user identifiers for the plurality of social contactsof the user is stored in memory on a mobile computing device (e.g., asmart television), a server device (e.g., a social networking website),or other memory. The user identifiers for the social contacts mayinclude, but is not limited to, the names of the social contacts, thesocial networking identifiers, the IP addresses of the social contacts,the devices of the social contacts, and any other appropriate useridentifiers.

The association may represent a plurality of relationships with theuser. Each relationship may represent a different relationship with theuser. In some implementations, the plurality of relationships include asocial relationship connection within a social network. The socialrelationship connection may include at least one of a level and adegree. A level may include top friend, friend, acquaintance, following,levels defined by the user, etc. A degree may include how many sharedcontacts between the user and the social contact, how many sharedinterests between the user and the social contact, degrees defined bythe user, etc.

At block 506, program identifier data representing programs currentlybeing viewed by the social contacts is received from the plurality ofsocial contacts of the user. Program identifier data may include, but isnot limited to, name of the program, location of the program, details ofthe program, etc.

At block 508, display data in a multi-pane display is provided. In someimplementations, the multi-pane display displays a plurality of videoprograms simultaneously shared by the social contacts. In someimplementations, the multi-pane display includes simultaneous (realtime) video streams of a plurality of the programs based on useraccessibility to a program source providing the program identified bythe program identifier. The multi pane display may be real time, i.e.,the multi-pane display may change when programs that social contacts areviewing, recommend, etc. are updated.

Method 500 may further include receiving a user request to select acurrently viewed program within the multi-pane display. In someimplementations, a determination may be made as to whether the user hasaccess to a program source providing the program identified by theprogram identifier. In another example, a determination may be madewhether the program content is appropriate to be provided to the user.For example, the user may have a “safe” setting, parental restrictions,etc. that prevent R-rated content from being displayed regardlesswhether they are shared by a social contact. If the user does haveaccess to the program source or the program content is determined to beappropriate, then the playing of sound data may be enabled for theselected program. If the user does not have access to the programsource, then the system may notify the user. For example, providers ofprogram content encrypt the content so only users that have access tothe program source can decrypt the scrambled data into usable data,i.e., programs.

In some implementations, an indication of the selected program isprovided to the user. For example, the user may select a program and thesystem may indicate that the program is available, the program iscurrently being viewed by a social contact, the program is highlyrecommended, etc. The indication may include visual feedback, audiofeedback (e.g., a screenreader), etc. For example, the user may selectthe program and the indication may highlight the program, provide audiodata (e.g., “program is not available”), etc.

In some implementations, display data may represent a plurality of theprogram identifier data to the user. The display data may be configuredto align each of the plurality of program identifier data with anidentifier of the social contact viewing or who previously viewed theprogram associated with the program identifier in a multi-pane display.For example, as shown in FIG. 1D, annotations, such as “Astrid iswatching the program”, may accompany each pane within the display.

The program identifier data may include feedback by social contacts,wherein the feedback includes electronic messages. For example, Astridmay comment on the program that she is watching, direct the user towatch the program, send a link to the program, etc. The feedback mayalso include an audio message, e.g., voice over internet protocol(VoIP), audio over internet protocol (AoIP), etc.

In some implementations, the user may set up the panes in the multi-panedisplay. The user may create the number of panes. For example, the usermay create two panes that show programs that a best friend and a parentare currently viewing. The user may create two other panes: one thatdisplay programs that were recommended and another that displaysprograms that were previously viewed. The user may create a first panethat displays the selected program and a second pane that displaysadditional information to the selected program. Multiple attributes maybe combined into one pane. For example, the user may create a pane toshow both programs that have been currently viewed and recommended. Theuser may drag and drop programs into the multi-panes.

In some implementations, the multi-pane display may display a dualscreen configuration. For example, the top (or side, etc.) may display aprogram, while the bottom (or side, etc.) may display an electronicprogramming guide, user's profile, user's social contacts, etc. In otherimplementations, the top screen may display a program, while the bottomscreen implements the social surfing mode, i.e., allowing the user tobrowse, queue, etc. other programs.

FIG. 6 is a block diagram of a computing device 600 that may be used toimplement the systems and methods in accordance with the describedimplementations, as either a client or as a server or plurality ofservers. Computing device 400 may include, but is not limited to,digital computers, such as laptops, desktops, workstations, personaldigital assistants, servers, blade servers, mainframes, cellulartelephones, smartphones, mobile computing devices (e.g., a notepad,e-reader, etc.) etc.

Computing device 600 includes a processor 600, memory 404, an interface406 and ports 408. Each of the components 602, 604, 606, and 608, areinterconnected using various busses, and may be mounted on a commonmotherboard or in other manners as appropriate. The processor 602 canprocess instructions for execution within the computing device 600,including instructions stored in the memory 604 to display graphicalinformation for a GUI on an external input/output device, such asdisplay 610 coupled to interface 606.

In other implementations, multiple processors and/or multiple buses maybe used, as appropriate, along with multiple memories and types ofmemory. Also, multiple computing devices 600 may be connected, with eachdevice providing portions of the necessary operations (e.g., as a serverbank, a group of blade servers, a multi-processor system, etc.). Theports 608, which may include various communication ports (e.g., USB,Bluetooth, Ethernet, wireless Ethernet, etc.), may be coupled to one ormore input/output devices, such as a keyboard, a mouse, a pointingdevice, a scanner, etc., or a networking device (a switch, adapter,bridge, router, hub, repeater, etc.).

The processor 602 may provide, for example, for coordination of theother components of the device 600, such as control of user interfaces,applications run by device 600, and wireless communication by device600. Processor 602 may communicate with a user via interface 606 (e.g.,control, display, external, etc.), coupled to a display 610. The display610 may be, for example, a TFT (Thin-Film-Transistor Liquid CrystalDisplay) display, an OLED (Organic Light Emitting Diode) display, otherflexible display, etc. The interface 606 may include circuitry fordriving the display 610 to provide graphical, textual, and otherinformation to a user. The interface 606 may receive commands (e.g.,voice-activated, text, etc.), from a user and convert them to provide tothe processor 602.

In addition, the interface 606 may be provided to communicate withprocessor 602 and enable near area communication of device 600 withother devices. The interface 606 may provide, for example, for wiredcommunication. In some implementations, multiple interfaces may be used.Computing device 600 may communicate wirelessly through interface 606,which may include digital signal processing circuitry where necessary.Interface 606 may provide for communications under various modes orprotocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA,TDMA, PDC, WCDMA, CDMA2000, or GPRS, etc. Such communication may occur,for example, through a radio-frequency transceiver. In addition,short-range communication may occur, such as using a Bluetooth, WiFi, orother such transceiver. In addition, GPS (Global Positioning System)receiver module may provide additional navigation- and location-relatedwireless data to device 600, which may be used as appropriate byapplications running on device 600. The device 600 may also be providedwith a storage device to provide additional storage, e.g., solid-stateflash media. Each of the components may be interconnected using variousbuses. Several of the components may be mounted on a common motherboardor in other appropriate manners.

Device 600 may communicate audio feedback. In some implementations, anaudio codec may receive spoken information from a user and convert it tousable digital information. The audio codec may generate audible soundfor a user, such as through a speaker, e.g., in a handset of device.Sound(s) may include sound from voice telephone calls, recorded sound(e.g., voice messages, music files, etc.), sound(s) generated byapplications operating on device, etc.

The memory 604 stores information within the computing device 600. Inone implementation, the memory 604 is a volatile memory unit or units.In another implementation, the memory 604 is a non-volatile memory unitor units. The memory 604 may also be another form of a tangiblecomputer-readable storage device, such as a magnetic or optical disk.The memory 604 may be capable of providing mass storage for thecomputing device 600. In one implementation, the memory 604 may be orcontain a computer-readable medium, such as a floppy disk device, a harddisk device, an optical disk device, or a tape device, a flash memory orother similar solid state memory device, or an array of devices,including devices in a storage area network or other configurations.

A computer program product may be tangibly embodied in an informationcarrier. The computer program product may also contain instructionsthat, when executed, perform one or more methods, such as thosedescribed above. The information carrier is a computer ormachine-readable medium, such as the memory 604, memory on processor602, a propagated signal, etc. Expansion memory may be provided andconnected to device 600 through interface 606.

These computer programs (e.g., programs, software, software applicationsor code), include machine instructions for a programmable processor, andcan be implemented in a high-level procedural and/or object-orientedprogramming language, and/or in assembly/machine language. As usedherein, the terms “machine-readable medium” and “computer-readablemedium” refers to any computer program product, apparatus and/or device(e.g., magnetic discs, optical disks, memory, Programmable LogicControllers (PLCs) Programmable Logic Devices (PLDs)), used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display)monitor), for displaying information to the user and a keyboard and apointing device (e.g., a mouse or a trackball), by which the user canprovide input to the computer. Other kinds of devices can be used toprovide for interaction with a user as well; for example, feedbackprovided to the user may be any form of sensory feedback (e.g., visualfeedback, auditory feedback, or tactile feedback); and input from theuser may be received in any form, including acoustic, speech, or tactileinput.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware or software embodied on a tangible medium,and/or combinations thereof. These various implementations can includeimplementation in one or more computer programs that are executableand/or interpretable on a programmable system including at least oneprogrammable processor, which may be special or general purpose, coupledto receive data and instructions from, and to transmit data andinstructions to, a storage system, at least one input device, and atleast one output device.

The systems and techniques described here can be implemented in acomputing system that includes a back-end component, a middlewarecomponent, or a front-end component, or any combination of back-end,middleware, or front-end components. The components of the system may beinterconnected by any form or medium of digital data communication(e.g., a communication network). Examples of communication networksinclude a local area network (“LAN”), a wide area network (“WAN”), andthe Internet.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anydisclosures or of what may be claimed, but rather as descriptions offeatures specific to particular implementations of particulardisclosures. Certain features that are described in this specificationin the context of separate implementations can also be implemented incombination in a single implementation. Conversely, various featuresthat are described in the context of a single implementation can also beimplemented in multiple implementations separately or in any suitablesubcombination. Moreover, although features may be described above asacting in certain combinations and even initially claimed as such, oneor more features from a claimed combination can in some cases be excisedfrom the combination, and the claimed combination may be directed to asubcombination or variation of a sub combination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Thus, particular implementations of the subject matter have beendescribed. Other implementations are within the scope of the followingclaims. In some cases, the actions recited in the claims can beperformed in a different order and still achieve desirable results. Inaddition, the processes depicted in the accompanying figures do notnecessarily require the particular order shown, or sequential order, toachieve desirable results. In certain implementations, multitasking andparallel processing may be advantageous.

What is claimed is:
 1. A method comprising: determining one or moreprograms currently being viewed by social contacts of a user; rankingthe one or more programs currently being viewed by the social contactsbased only upon factors of the user and the social contacts, wherein theranking is calculated at least in part based on an affinity of each ofthe social contacts corresponding to the each of the one or moreprograms with the entity such that a closer affinity applies a betterweight to the ranking than a less close affinity; and generating displaydata for a rank-ordered display of program identifier data correspondingto the one or more programs, wherein the display data includes at leastfirst program identifier data of a first of the social contacts with afirst affinity and second program identifier data of a second of thesocial contacts with a second affinity that is less close than the firstaffinity.
 2. The method of claim 1, further comprising: for each of thesocial contacts, determining an affinity of the social contact based atleast in part on social network data.
 3. The method of claim 2, whereinthe social network data comprises a user profile of the user and a userprofile of the social contact, and the determining an affinity of thesocial contact comprises identifying one or more relationships betweenthe user profile of the user and the user profile of the social contact.4. The method of claim 2, wherein the social network data comprises adegree between the user and the social contact, wherein the degree isbased on the number of contacts shared between the user and the socialcontact.
 5. The method of claim 1, further comprising: for each of thesocial contacts, determining an affinity of the social contact based atleast in part on a number of times that the user has selected one ormore programs associated with the social contact.
 6. The method of claim1, wherein the display data further comprises at least one identifierfor at least one of the social contacts.
 7. The method of claim 6,wherein the at least one identifier for the at least one of the socialcontacts is displayed alongside feedback of the one or more of thesocial contacts.
 8. The method of claim 1, further comprising: inresponse to a user selecting a program, providing program information ofthe selected program to a social network of the user.
 9. The method ofclaim 1, wherein the factors of the user comprise a location of theuser.
 10. The method of claim 1, further comprising: receiving a userinput, wherein the user input corresponds with a genre; and for each ofthe one or more programs: determining whether the program matches thegenre; and excluding the program from the rank-ordered display inresponse to determining that the program does not match the genre.
 11. Asystem comprising: a hardware processor configured to: determine one ormore programs currently being viewed by social contacts of a user; rankthe one or more programs currently being viewed by the social contactsbased only upon factors of the user and the social contacts, wherein theranking is calculated at least in part based on an affinity of each ofthe social contacts corresponding to the each of the one or moreprograms with the entity such that a closer affinity applies a betterweight to the ranking than a less close affinity; and generate displaydata for a rank-ordered display of program identifier data correspondingto the one or more programs, wherein the display data includes at leastfirst program identifier data of a first of the social contacts with afirst affinity and second program identifier data of a second of thesocial contacts with a second affinity that is less close than the firstaffinity.
 12. The system of claim 11, wherein the hardware processor isfurther configured to: for each of the social contacts, determine anaffinity of the social contact based at least in part on social networkdata.
 13. The system of claim 12, wherein the social network datacomprises a user profile of the user and a user profile of the socialcontact, and the determining an affinity of the social contact comprisesidentifying one or more relationships between the user profile of theuser and the user profile of the social contact.
 14. The system of claim12, wherein the social network data comprises a degree between the userand the social contact, wherein the degree is based on the number ofcontacts shared between the user and the social contact.
 15. The systemof claim 11, wherein the hardware processor is further configured to:for each of the social contacts, determine an affinity of the socialcontact based at least in part on a number of times that the user hasselected one or more programs associated with the social contact. 16.The system of claim 11, wherein the display data further comprises atleast one identifier for at least one of the social contacts.
 17. Thesystem of claim 16, wherein the at least one identifier for the at leastone of the social contacts is displayed alongside feedback of the one ormore of the social contacts.
 18. The system of claim 11, wherein thehardware processor is further configured to: in response to a userselecting a program, provide program information of the selected programto a social network of the user.
 19. The system of claim 11, wherein thefactors of the user comprise a location of the user.
 20. The system ofclaim 11, wherein the hardware processor is further configured to:receive a user input, wherein the user input corresponds with a genre;and for each of the one or more programs: determine whether the programmatches the genre; and exclude the program from the rank-ordered displayin response to determining that the program does not match the genre.